La Web

Las páginas web consisten en objetos, que pueden ser archivos HTML, imágenes, Java applet, archivos de audio, video, etc. Cada página web consiste en un archivo base HTML que incluye referencias a otros objetos, cada uno de ellos direccionable por una URL. Un ejemplo de URL es www.someschool.edu/someDept/pic.gig, donde www.someschool.edu indica el nombre del host, y /someDept/pic.gig indica el path del objeto solicitado.

HTTP (HyperText Transfer Protocol)

Se implementa en dos programas, un programa cliente y un programa servidor que se ejecutan en sistemas terminales diferentes, se comunican entre sí intercambiando mensajes HTTP usualmente en el puerto 80. Define cómo los clientes web solicitan páginas web a los servidores web y cómo estos servidores transfieren esas páginas web a los clientes.

Utiliza TCP como protocolo de transporte. No mantiene ninguna información acerca del estado del cliente, por lo tanto, se dice que HTTP es un protocolo sin memoria de estado. Como envía las líneas de cabecera de solicitud y respuesta por la misma conexión TCP que transporta el propio archivo transferido, se dice que HTTP envía su información de control en banda.

Conexiones persistentes: Todas las solicitudes y respuestas en una interacción se envían por la misma conexión TCP.
Conexiones no persistentes: Cada par solicitud/respuesta se envían en conexiones TCP separadas.

Se pueden establecer varias conexiones TCP en paralelo para la misma aplicación.
RTT (Round-Trip Time): “tiempo de ida y vuelta”, es el tiempo que tarda un paquete pequeño en viajar desde el cliente al servidor y volver de nuevo al cliente.

Los problemas del HTTP no persistente son:

  • Requiere 2*RTT por objeto
  • Overhead del SO para cada conexión TCP
  • Los navegadores generalmente abren conexiones TCP paralelas para poder recuperar los objetos referenciados
Nota

El header "Connection" con valor "keep-alive" indica que la conexión se debe manetener abierta (de ser posible).

Mensajes HTTP

Solicitud

Pasted image 20221005142036.png

Respuesta

Pasted image 20221005142116.png

Donde el código de estado aparece en la primera línea en los mensajes de respuesta Servidor→Cliente.

Algunos ejemplos de códigos de respuesta HTTP son:

  • 200 OK: La solicitud se ha ejecutado con éxito y se ha devuelto la información en el mensaje de respuesta.
  • 301 Moved Permanently: El objeto solicitado ha sido movido de forma permanente; el nuevo URL se especifica en la línea de cabecera Location: del mensaje de respuesta. El software cliente recuperará automáticamente el nuevo URL.
  • 400 Bad Request: Se trata de un código de error genérico que indica que la solicitud no ha sido comprendida por el servidor.
  • 404 Not Found: El documento solicitado no existe en este servidor.
  • 505 HTTP Version Not Supported: La versión de protocolo HTTP solicitada no es soportada por el servidor.

Cookies

Permiten identificar y almacenar información de los usuarios. La primera vez que un usuario visita un sitio, este puede proporcionar una identificación del mismo, así en las sesiones posteriores el navegador pasa una cabecera de cookie al servidor, identificando al usuario ante el servidor. Las cookies pueden, por tanto, utilizarse para crear una capa de sesión por encima del protocolo HTTP sin memoria del estado de la conexión

Utiliza cuatro componentes:

  1. una línea de cabecera de la cookie en el mensaje de respuesta HTTP
  2. una línea de cabecera de la cookie en el mensaje de solicitud HTTP
  3. el archivo de cookie almacenado en el sistema terminal del usuario y gestionado por
    el navegador de usuario
  4. una base de datos back-end en el sitio web.

Pasted image 20221005142304.png

Almacenamiento Caché

Un caché web, también denominado servidor proxy, es una entidad de red que satisface
solicitudes HTTP en nombre de un servidor web de origen. La caché web dispone de su
propio almacenamiento en disco y mantiene en él copias de los objetos solicitados
recientemente.

  1. El navegador establece una conexión TCP con la caché web y envía una solicitud
    HTTP para el objeto de la caché web.
  2. La caché web comprueba si tiene una copia del objeto almacenada localmente. Si la
    tiene, la caché web devuelve el objeto dentro de un mensaje de respuesta HTTP al
    navegador del cliente.
  3. Si la caché no tiene el objeto, abre una conexión TCP con el servidor de origen y
    envía una solicitud HTTP para obtener el objeto a través de la conexión TCP
    caché-servidor. Después de recibir esta solicitud, el servidor de origen envía el
    objeto dentro de un mensaje de respuesta HTTP a la caché web.
  4. Cuando la caché web recibe el objeto, almacena una copia en su dispositivo de
    almacenamiento local y envía una copia, dentro de un mensaje de respuesta HTTP,
    al navegador del cliente.

Una caché es a la vez un servidor y un cliente. Habitualmente es un ISP quién adquiere e instala una caché web. Una caché web puede reducir sustancialmente el tiempo de respuesta a la solicitud de un cliente y reducir el tráfico en el enlace de acceso a Internet de una institución. También pueden reducir el tráfico web global en Internet, mejorando en consecuencia el rendimiento de todas las aplicaciones.

GET condicional

El objetivo es no enviar el objeto si la cache tiene una versión “cacheada” actualizada. La cache especifica la fecha de la copia almacenada en una solicitud HTTP: If-Modified-Since: 'date'.

La respuesta del servidor no contiene un objeto si la copia cacheada está actualizada:

HTTP/1.0 304 Not Modified.

Pasted image 20221005142705.png